def happy_birthday(name='韩信', age=18):
    print('祝' + name + '生日快乐')
    print(str(age) + '生日快乐')


# 调用
happy_birthday()    # 不传参数

happy_birthday('亚索')        # 位置传参，age采用默认值

happy_birthday(age=199)      # 关键字传参数，name采用默认值

happy_birthday('盖伦', 200)   # 传参数

# happy_birthday(19)           # TypeError: can only concatenate str (not "int") to str


# a作为位置参数，b默认值参数
def fun(a, b=20):
    pass


# SyntaxError: non-default argument follows default argument
# def fun2(a=20, b):  # 报错了，语法错误。【当位置参数】和【默认值参数】同时存在的时候，【位置参数】在【后】会被报错。
#     pass

# 当 【位置参数】 和 【关键字参数】 同时存在时，
# 应该遵循 【位置参数】 在前，【默认值参数】 在后原则

